#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
启动大模型对话Web应用的辅助脚本
"""
import os
import sys
import time

def set_api_key():
    """提示用户输入API密钥并设置环境变量"""
    print("\n" + "="*60)
    print("大模型对话Web应用 - 启动工具")
    print("="*60)
    
    print("\n需要设置百炼API密钥才能使用本应用程序。")
    print("API密钥格式通常为'sk-xxxx...'")
    print("\n请输入您的百炼API密钥:")
    
    api_key = input().strip()
    
    if not api_key:
        print("\n错误: API密钥不能为空")
        return False
        
    # 设置环境变量
    os.environ["DASHSCOPE_API_KEY"] = api_key
    print(f"\nAPI密钥已设置: {api_key[:5]}...{api_key[-4:]}")
    
    return True

def run_web_app():
    """运行Web应用程序"""
    try:
        import app
        
        print("\n" + "="*60)
        print("大模型对话Web应用已启动!")
        print("="*60)
        print("\n请在浏览器中访问: http://localhost:5000")
        print("\n按Ctrl+C停止应用程序")
        
        # 启动Flask应用
        app.app.run(debug=True, host='0.0.0.0', port=5000)
        
    except ImportError:
        print("\n错误: 无法导入app模块，请确保在正确的目录中运行")
        return False
    except Exception as e:
        print(f"\n启动应用程序时出错: {str(e)}")
        return False
    
    return True

def main():
    """主函数"""
    print("\n欢迎使用大模型对话Web应用!")
    
    # 检查是否已设置API密钥
    api_key = os.environ.get("DASHSCOPE_API_KEY")
    if not api_key:
        if not set_api_key():
            print("\n未设置API密钥，应用程序无法启动。")
            print("请重新运行此脚本并提供有效的API密钥。")
            return 1
    else:
        print(f"\nAPI密钥已存在: {api_key[:5]}...{api_key[-4:]}")
    
    # 运行Web应用
    if not run_web_app():
        return 1
    
    return 0

if __name__ == "__main__":
    try:
        sys.exit(main())
    except KeyboardInterrupt:
        print("\n\n应用程序已停止。")
        sys.exit(0) 